home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs07.d81 / tbasic.arc / SET SPRITES / TB (.txt)
Commodore BASIC  |  2009-10-10  |  3KB  |  109 lines

  1. 0 REM  SET SPRITES(AUG 25/84)  :
  2. 1 :
  3. 2 REM 6 STATEMENTS, 0 FUNCTIONS
  4. 3 :
  5. 4 REM KEYWORD CHARACTERS:27
  6. 5 :
  7. 6 REM KEYWORD  ROUTINE LINE SER#
  8. 7 REM S/COLSPR COLSP   3530 031
  9. 8 REM S/SSPR   SSP     3550 032
  10. 9 REM S/CSPR   CSP     3560 033
  11. 10 REM S/XSPR   XSP     3574 034
  12. 11 REM S/YSPR   YSP     3628 035
  13. 12 REM S/XYSPR  XYSP    3656 036
  14. 13 :
  15. 14 REM U/CHKSPR(3664/037)
  16. 15 REM U/RASCHK(3676/038)
  17. 16 REM D/POWERS(3694/039)
  18. 17 :
  19. 18 REM============================
  20. 19 :
  21. 108 .ASC"COLSP[210]SSP[210]CSP[210]"
  22. 109 .ASC"XSP[210]YSP[210]XYSP[210]"
  23. 1108 .WORD COLSPR-1,SSP-1,CSP-1
  24. 1109 .WORD XSP-1,YSP-1,XYSP-1
  25. 3530 COLSP JSR CHS1 ;GET SPRITE NUMBER
  26. 3532 TXA
  27. 3534 PHA       ;SAVE IT
  28. 3536 JSR $V7F1 ;CHECK COMMA AND
  29. 3538 PLA       ;GET COLOUR
  30. 3540 TAY
  31. 3542 TXA
  32. 3544 STA $D027,Y  ;POKE COLOUR
  33. 3546 RTS
  34. 3548 ;
  35. 3550 SSP JSR CHS1 ;GET SPRITE NUMBER
  36. 3552 LDA POWERS,X ;SET THE BIT
  37. 3554 ORA $D015    ;OR SPRITE ENABLE
  38. 3556 BNE CSP1     ;RGSTR,TURN ON
  39. 3558 ;
  40. 3560 CSP JSR CHS1 ;GET SPRITE NUMBER
  41. 3562 LDA POWERS,X ;SET THE BIT
  42. 3564 EOR  #$FF    ;MASK IT OUT
  43. 3566 AND $D015    ;AND SPRITE ENABLE
  44. 3568 CSP1 STA $D015 ;RGST,TURN OFF
  45. 3570 RTS
  46. 3572 ;
  47. 3574 XSP JSR CHS1 ;GET SPRITE NUMBER
  48. 3576 STX T3 ;SAVE IT
  49. 3578 JSR $AEFD ;CHECK FOR COMMA
  50. 3580 JSR $AD8A ;GET X POSITION
  51. 3582 JSR $B7F7 ;CONVERT TO INTEGER
  52. 3584 LDA $15   ;GET HIGH BYTE
  53. 3586 CMP #2    ;BRANCH IF
  54. 3588 BCS XS3   ;TOO HIGH
  55. 3590 LDX T3    ;GET SPRITE NUMBER
  56. 3592 ROR       ;PUT MSB IN CARRY
  57. 3594 LDA POWERS,X ;SET THE BIT
  58. 3596 BCC XS1   ;BRANCH ON 0 MSB
  59. 3598 ORA $D010 ;OR MSB REGISTER
  60. 3600 BCS XS2   ;SKIP
  61. 3602 EOR #$FF  ;MASK THE BIT
  62. 3604 AND $D010 ;CLEAR THE BIT
  63. 3606 TAY       ;SAVE MSB
  64. 3608 TXA       ;SPRITE NUMBER
  65. 3610 ASL       ;DOUBLE IT
  66. 3612 TAX       ;USE AS INDEX
  67. 3614 LDA $14   ;GET X LOW BYTE
  68. 3616 JSR RASCHK ;WAIT FOR RASTER
  69. 3618 STY $D010  ;WRITE MSB
  70. 3620 STA $D000,X ;WRITE LOW BYTE
  71. 3622 RTS
  72. 3624 SX3 JMP $B248 ;ILLEGAL QUANTITY
  73. 3626 ;
  74. 3628 YSP JSR CHS1 ;GET SPRITE NUMBER
  75. 3630 YS1 TXA      ;DOUBLE IT
  76. 3632 ASL
  77. 3634 PHA ;SET IT ASIDE
  78. 3636 JSR $B7F1 ;COMMA, Y-POSITION
  79. 3638 TXA ;MOVE IT TO .Y
  80. 3640 TAY
  81. 3642 PLA ;GET 2*(SPRITE#)
  82. 3644 TAX ;USE IT AS INDEX FOR
  83. 3646 TYA ;Y-POSITION
  84. 3648 JSR RASCHK ;WAIT FOR RASTER
  85. 3650 STA $D001,X ;WRITE POSITION
  86. 3652 RTS
  87. 3654 ;
  88. 3656 XYSP JSR XSP ;WRITE X-POSITION
  89. 3658 LDX T3       ;GET SPRITE #
  90. 3660 BPL YS1      ;WRITE Y-POSITION
  91. 3662 ;
  92. 3664 CHKSPR JSR $73 ;BUMP CHRGET PTR
  93. 3666 CHS1 JSR $B79E ;GET SPRITE NUMBER
  94. 3668 CPX #8         ;MUST BE UNDER 8
  95. 3670 BCS XS3
  96. 3672 RTS
  97. 3674 ;
  98. 3676 RASCHK PHA      ;STORE ACCUMULATOR
  99. 3678 RAS1 LDA $D012  ;READ RASTER LINE
  100. 3680 SBC $D001,X ;SUBTRACT SPRITE-Y
  101. 3682 BCC RAS2
  102. 3684 CMP #$2B ;WAIT TIL
  103. 3686 BCC RAS1 ;CLEAR OF SPRITE
  104. 3688 RAS2 PLA
  105. 3690 RTS
  106. 3692 ;
  107. 3694 POWERS .BYTE 1,2,4,8,16,32,64,128
  108. 3696 ;
  109.